//红绿黄，各自亮灯时长是3s，2s，1s
//不能用一下代码，因为定时器不准，它会受同步代码执行时间的影响
// setInterval(()=>{
//     console.log('红');
//     setTimeout(()=>{
//         console.log('绿');
//         setTimeout(()=>{
//             console.log('黄');
//         },2000)
//     },3000)
// },6000)


//原理：先打印亮灯，后添加一个promise，并设置定时器规定一定时间后在resolve，
//  然后在await后面等待promise resolve，再执行下一个await
function timePromise(time) {
    return new Promise((resolve, reject) => {
        setTimeout(resolve, time)
    })
}
function setColor(color, time) {
    console.log(color);
    return timePromise(time)
}
async function run(){
    await setColor('红',3000)
    await setColor('绿',2000)
    await setColor('黄',1000)
    run()
}
run()


//另一种方式
// function foo() {
//     setColor('红', 3000).then(() => {
//         setColor('绿', 2000).then(() => {
//             setColor('黄', 1000)
//         })
//         foo()
//     })
// }
// foo()
